#pragma once

#pragma once

#include "fxcc/core/graph/opengl3/Buffer.h"

namespace fxcc
{
    namespace graph
    {
        namespace opengl3
        {

            struct FXCC_API SSBO : public fxcc::graph::opengl3::Buffer
            {
                SSBO() : Buffer(GL_SHADER_STORAGE_BUFFER)
                {
                    Create();
                }

                static void DispatchCompute(int x, int y, int z)
                {
                    glDispatchCompute(x, y, z);
                }
                static void MemoryBarrier()
                {
                    glMemoryBarrier(SSBO::Target());
                }
                static int Target()
                {
                    return GL_SHADER_STORAGE_BUFFER;
                };

            };
        }
    }
};
